package com.novel.utils;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import com.novel.task.CrawlerSectionTask;

/**
 * 缓存工具类，系统执行过程可以缓存一些必要有用的信息。（从数据库初始化加载系统配置信息。）
 * 功能类似于redis，缓存少量必要信息可以使用，
 * 缓存大量用户信息会占用大量服务器资源，应该使用redis等非关系型数据库。
 */
public class CacheUtil
{

    private CacheUtil()
    {
    }

    private  ConcurrentHashMap<Object,Object> hm = new ConcurrentHashMap<>();

    private static class CacheUtilHandle 
    { 
        static CacheUtil instance = new CacheUtil(); 
    }

	public static CacheUtil getInstance() {
		return CacheUtilHandle.instance;
	}
    public void add(Object pk, Object obj)
    {
        hm.put(pk, obj);
    }

    public void update(Object pk, Object obj)
    {
        hm.put(pk, obj);
    }

    public  Object delete(Object pk)
    {
        return hm.remove(pk);
    }

    public  Object query(Object pk)
    {
        return hm.get(pk);
    }
    
    @SuppressWarnings("unchecked")
	public Map<Long, CrawlerSectionTask> getCrawlerSectionTask(){
    	Map<Long, CrawlerSectionTask> secTask = (Map<Long, CrawlerSectionTask>)hm.get("crawlerSectionTask");
    	return secTask;
    }
    public void addCrawlerSectionTask( Map<Long, CrawlerSectionTask> obj)
    {
        hm.put("crawlerSectionTask", obj);
    }
    
}
